package pe.com.sisnic.seguros.service.impl;

import java.util.Calendar;
import java.util.Date;
import java.util.List;

import javax.annotation.Resource;

import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

import pe.com.sisnic.seguros.dao.TipoCambioDao;
import pe.com.sisnic.seguros.model.TipoCambio;
import pe.com.sisnic.seguros.service.TipoCambioService;

@Service
public class TipoCambioServiceImpl implements TipoCambioService{

	@Resource
	private TipoCambioDao tipoCambioDao;
	
	@Transactional
	public List<TipoCambio> buscarTodos() {
		return tipoCambioDao.getTodos();
	}
	
	@Transactional
	public List<TipoCambio> buscarUltimos500() {
		return tipoCambioDao.getUltimos500();
	}
	
	@Transactional
	public boolean actualizarTipoCambio(TipoCambio tipoCambio, String usuarioModificacion) {
		Calendar fecha = Calendar.getInstance();
		fecha.setTime(tipoCambio.getFechaTipoCambio());
		int dateUltima = fecha.getActualMaximum(Calendar.DATE);
		if(fecha.get(Calendar.DATE) == 1 || fecha.get(Calendar.DATE) == dateUltima){
			try {
				Date fechaHoy = new Date();
				return tipoCambioDao.actualizarTipoCambio(fechaHoy, usuarioModificacion, tipoCambio.getValorCompra(), tipoCambio.getValorTCFijo(), tipoCambio.getValorVenta(), tipoCambio.getFechaTipoCambio());
			} catch (Exception e) {			
				e.printStackTrace();
				return false;
			}
		} else {
			return false;
		}		
	}
	
	@Transactional
	public boolean registrarTipoCambio(TipoCambio tipoCambio, String usuarioModificacion) {
		try {
			Date fechaHoy = new Date();
			if(tipoCambio.getFechaTipoCambio().after(fechaHoy)){
				return false;
			}
			return tipoCambioDao.registrarTipoCambio(fechaHoy, usuarioModificacion, tipoCambio.getValorCompra(), tipoCambio.getValorTCFijo(), tipoCambio.getValorVenta(), tipoCambio.getFechaTipoCambio());
		} catch (Exception e) {			
			e.printStackTrace();
			return false;
		}	
	}
}
